function _new () {
  // 首先创建一个空对象
  let target = {}
  // 第一个参数就是构造函数，提取出来
  let [constructor, ...args] = [...arguments]
  // target 是 constructor 的实例
  target.__proto__ = constructor.prototype
  // 执行构造函数
  let res = constructor.apply(target, args)
  if (res && ("object" === typeof res || "function" == typeof res))
    return res
  return target
}

function A (str) {
  this.name = str
}
var obj = _new(A, 'yeoman')
console.log(obj)
console.log(obj instanceof A)
